// 系统管理相关的公共字典、格式化函数和正则校验规则

/**
 * 公共正则校验规则
 */
export const regexRules = {
  // 手机号正则
  phone: /^1[3-9]\d{9}$/,
  // 微信号正则
  wechat: /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/,
  // QQ号正则
  qq: /^[1-9]\d{4,10}$/,
  // 姓名正则（1-20个字符）
  name: /^.{1,20}$/
};

/**
 * 用户状态映射
 */
export const userStatusMap = {
  1: "正常",
  0: "停用",
};

/**
 * 用户状态选项（用于下拉选择器）
 */
export const userStatusOptions = [
  { label: "正常", value: 1 },
  { label: "停用", value: 0 },
];

/**
 * 客户渠道来源映射
 */
export const channelMap = {
  1: "线上活动",
  2: "推广介绍",
};

/**
 * 客户渠道来源选项
 */
export const channelOptions = [
  { label: "线上活动", value: 1 },
  { label: "推广介绍", value: 2 },
];

/**
 * 意向学科映射（与数据库表保持一致）
 */
export const subjectMap = {
  1: "AI智能应用开发(Java)",
  2: "AI大模型开发(Python)",
  3: "AI鸿蒙开发",
  4: "AI大数据",
  5: "AI嵌入式",
  6: "AI测试",
  7: "AI运维",
};

/**
 * 意向学科选项
 */
export const subjectOptions = [
  { label: "AI智能应用开发(Java)", value: 1 },
  { label: "AI大模型开发(Python)", value: 2 },
  { label: "AI鸿蒙开发", value: 3 },
  { label: "AI大数据", value: 4 },
  { label: "AI嵌入式", value: 5 },
  { label: "AI测试", value: 6 },
  { label: "AI运维", value: 7 },
];

/**
 * 商机状态映射
 */
export const businessStatusMap = {
  1: "待分配",
  2: "待跟进",
  3: "跟进中",
  4: "回收",
  5: "转客户"
};

/**
 * 商机状态选项
 */
export const businessStatusOptions = [
  { label: "待分配", value: 1 },
  { label: "待跟进", value: 2 },
  { label: "跟进中", value: 3 },
  { label: "回收", value: 4 },
  { label: "转客户", value: 5 }
];

/**
 * 跟进状态映射
 */
export const trackStatusMap = {
  1: "接通",
  2: "拒绝",
  3: "无人接听"
};

/**
 * 跟进状态选项
 */
export const trackStatusOptions = [
  { label: "接通", value: 1 },
  { label: "拒绝", value: 2 },
  { label: "无人接听", value: 3 }
];

/**
 * 学历映射（与数据库表保持一致）
 */
export const degreeMap = {
  1: "高中",
  2: "中专",
  3: "大专",
  4: "本科",
  5: "硕士",
  6: "博士",
  7: "其他"
};

/**
 * 学历选项
 */
export const degreeOptions = [
  { label: "高中", value: 1 },
  { label: "中专", value: 2 },
  { label: "大专", value: 3 },
  { label: "本科", value: 4 },
  { label: "硕士", value: 5 },
  { label: "博士", value: 6 },
  { label: "其他", value: 7 }
];

/**
 * 在职情况映射（与数据库表保持一致）
 */
export const jobStatusMap = {
  1: "在职",
  0: "离职"
};

/**
 * 在职情况选项
 */
export const jobStatusOptions = [
  { label: "在职", value: 1 },
  { label: "离职", value: 0 }
];

  /**
 * 性别映射
 */
export const genderMap = {
  1: "男",
  0: "女"
};

/**
 * 性别选项（用于下拉选择器）
 */
export const genderOptions = [
  { label: "男", value: 1 },
  { label: "女", value: 0 }
];

/**
 * 格式化用户状态
 * @param {number|string} value - 状态值
 * @returns {string} 格式化后的状态文本
 */
export const formatUserStatus = (value) => {
  return userStatusMap[value] || "";
};

/**
 * 格式化性别
 * @param {number|string} value - 性别值
 * @returns {string} 格式化后的性别文本
 */
export const formatGender = (value) => {
  return genderMap[value] || "";
};

/**
 * 格式化渠道来源
 * @param {number|string} value - 渠道值
 * @returns {string} 格式化后的渠道文本
 */
export const formatChannel = (value) => {
  return channelMap[value] || "";
};

/**
 * 格式化意向学科
 * @param {number|string} value - 学科值
 * @returns {string} 格式化后的学科文本
 */
export const formatSubject = (value) => {
  return subjectMap[value] || "";
};

/**
 * 格式化学历
 * @param {number|string} value - 学历值
 * @returns {string} 格式化后的学历文本
 */
export const formatDegree = (value) => {
  return degreeMap[value] || "";
};

/**
 * 根据渠道来源获取关联的意向学科
 * @param {number} channelId - 渠道来源ID
 * @returns {Array} 关联的意向学科选项数组
 */
export const getSubjectsByChannel = (channelId) => {
  // 渠道来源与意向学科的关联关系
  const channelSubjectMap = {
    // 线上活动渠道关联的学科
    1: [1, 2, 3, 4, 5, 6, 7],
    // 推广介绍渠道关联的学科
    2: [1, 2, 3, 4, 5, 6, 7]
  };
  
  const subjectIds = channelSubjectMap[channelId] || [];
  return subjectOptions.filter(subject => subjectIds.includes(subject.value));
};;

/**
 * 格式化在职情况
 * @param {number|string} value - 在职情况值
 * @returns {string} 格式化后的在职情况文本
 */
export const formatJobStatus = (value) => {
  return jobStatusMap[value] || "";
};

/**
 * 格式化商机状态
 * @param {number|string} value - 商机状态值
 * @returns {string} 格式化后的商机状态文本
 */
export const formatBusinessStatus = (value) => {
  return businessStatusMap[value] || "";
};

/**
 * 格式化跟进状态
 * @param {number|string} value - 跟进状态值
 * @returns {string} 格式化后的跟进状态文本
 */
export const formatTrackStatus = (value) => {
  return trackStatusMap[value] || "";
};

/**
 * 获取商机状态标签的样式类名
 * @param {number|string} status - 商机状态值
 * @returns {string} 样式类名
 */
export const getBusinessStatusClass = (status) => {
  const statusClassMap = {
    1: "status-pending",  // 待分配
    2: "status-waiting",  // 待跟进
    3: "status-following", // 跟进中
    4: "status-recycled",  // 回收
    5: "status-converted"  // 转客户
  };
  return statusClassMap[status] || "status-default";
};

/**
 * 格式化日期时间
 * @param {string|Date} dateTime - 日期时间
 * @returns {string} 格式化后的日期时间字符串
 */
export const formatDateTime = (dateTime) => {
  if (!dateTime) return '';
  const date = new Date(dateTime);
  if (isNaN(date.getTime())) return dateTime;
  return date.getFullYear() + '-' + 
    String(date.getMonth() + 1).padStart(2, '0') + '-' + 
    String(date.getDate()).padStart(2, '0') + ' ' + 
    String(date.getHours()).padStart(2, '0') + ':' + 
    String(date.getMinutes()).padStart(2, '0') + ':' + 
    String(date.getSeconds()).padStart(2, '0');
};

/**
 * 格式化手机号（部分隐藏）
 * @param {string} phone - 手机号
 * @returns {string} 格式化后的手机号
 */
export const formatPhone = (phone) => {
  if (!phone || phone.length !== 11) return phone;
  return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
};

/**
 * 验证手机号格式
 * @param {string} phone - 手机号
 * @returns {boolean} 是否有效
 */
export const isValidPhone = (phone) => {
  const phoneRegex = /^1[3-9]\d{9}$/;
  return phoneRegex.test(phone);
};

/**
 * 验证邮箱格式
 * @param {string} email - 邮箱
 * @returns {boolean} 是否有效
 */
export const isValidEmail = (email) => {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return emailRegex.test(email);
};

/**
 * 获取状态标签的样式类名
 * @param {number|string} status - 状态值
 * @returns {string} 样式类名
 */
export const getStatusClass = (status) => {
  const statusClassMap = {
    1: "status-normal",
    0: "status-disabled",
  };
  return statusClassMap[status] || "status-default";
};
